package cn.bearspark.happening.provider.dao.co;

import cn.bearspark.common.enumeration.CommentAbleEnum;
import cn.bearspark.common.enumeration.VisibilityEnum;
import cn.bearspark.framework.redis.starter.buffer.hash.HotData;
import cn.bearspark.framework.redis.starter.buffer.hash.un.Cacheable;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 动态的缓存对象
 *
 * @author f
 */
@Data
public class HappeningCO implements Cacheable {

    /**
     * 动态的 id
     */
    private Long happeningId;

    /**
     * 发布动态的用户 id
     */
    private Long userId;

    /**
     * 标题
     */
    private String title;

    /**
     * 动态的内容
     */
    private String content;

    /**
     * 可见性
     *
     * @see VisibilityEnum
     */
    private Integer visibility;

    /**
     * 可评论性
     *
     * @see CommentAbleEnum
     */
    private Integer commentAble;

    /**
     * 提前发布
     *
     * @see cn.bearspark.happening.enumeration.happening.AdvanceReleaseEnum
     */
    private Integer advanceRelease;

    /**
     * 标签的 id
     */
    private Long tagId;

    /**
     * 预约直播的 id
     */
    private Long bookLiveId;

    /**
     * 投票的 id
     */
    private Long voteId;

    /**
     * 投稿专栏的 id
     */
    private Long articleId;

    /**
     * 投稿视频的 id
     */
    private Long videoId;

    /**
     * 引用的动态的 id
     */
    private Long quotedHappeningId;

    /**
     * 点赞量
     */
    @HotData
    private Long likeNum;

    /**
     * 评论量
     */
    @HotData
    private Long commentNum;

    /**
     * 转发量
     */
    @HotData
    private Long forwardNum;

    /**
     * 发布动态的时间，充当 createTime 字段
     */
    private LocalDateTime pubTime;

    @Override
    public Long id() {
        return happeningId;
    }
}
